﻿/**********************************************************************
 * @file   GUIDialogBase.h
 * @brief  对话框基类
 * @author BaGuijun (baguijun@163.com)
 * @date   2024-11-12
 *********************************************************************/
#ifndef _GUIDialogBase_H
#define _GUIDialogBase_H

#include "GUIWidgetAPI.h"
#include "FITK_Kernel/FITKCore/FITKAbstractGUI.h"

namespace Acoustics {
    class FITKAcousticsSEAModel;
    class FITKAcousticsFEModel;
    class FITKAcousticsPhysics;
    class FITKAcousticsDiscModel;
}

namespace GUI
{
    /**
     * @brief  对话框基类
     * @author BaGuijun (baguijun@163.com)
     * @date   2024-11-12
     */
    class GUIWIDGETAPI GUIDialogBase : public Core::FITKDialog
    {
        Q_OBJECT;
    public:
        /**
         * @brief    构造函数
         * @param[i] parent          父对象
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-12
         */
        GUIDialogBase(QWidget* parent = nullptr);
        /**
         * @brief    析构函数
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-12
         */
        virtual ~GUIDialogBase();
    protected:
        /**
         * @brief    对话框高亮数据接口
         * @param[i] objID              数据对象ID
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-12-16
         */
        void hightGraphObj(const int& objID);
        /**
         * @brief    对话框取消高亮数据接口
         * @param[i] objID              数据对象ID
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-12-16
         */
        void disHightGraphObj(const int& objID);
        /**
         * @brief    取消全部高亮接口
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-12-16
         */
        void clearAllHightGraph();
    protected:
        /**
         * @brief  声学物理属性管理器
         * @author BaGuijun (baguijun@163.com)
         * @date   2024-11-13
         */
        Acoustics::FITKAcousticsPhysics* _physics = nullptr;
        /**
         * @brief  离散模型
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-12
         */
        Acoustics::FITKAcousticsDiscModel* _DiscModel = nullptr;
        /**
         * @brief  SEA模型
         * @author BaGuijun (baguijun@163.com)
         * @date   2024-11-12
         */
        Acoustics::FITKAcousticsSEAModel* _SEAModel = nullptr;
        /**
         * @brief  FE模型
         * @author BaGuijun (baguijun@163.com)
         * @date   2024-11-12
         */
        Acoustics::FITKAcousticsFEModel* _FEModel = nullptr;
    };
}

#endif
